<?php
include_once 'database_manager.php';
include_once 'categorie.php';

class Produit
{
	private $_idProduit;
	private $_libelleProduit;
	private $_prixProduit;
	private $_idCommercant;
	private $_pathImageProduit;
	private $_categorieProduit;
	private $_qteEnStock;
	private $_nbVente;
	
	public function __construct($idProduit="0", $libelleProduit="NONE", $categorieProduit="NONE", $prixProduit=1.0, $idCommercant="0", $pathImageProduit=NULL, $qteEnStock=0, $nbVente=0)
	{
		$this->setId($idProduit);
		$this->setNom($libelleProduit);
		$this->setPrix($prixProduit);
		$this->setIdCommercant($idCommercant);
		$this->setPathImage($pathImageProduit);
		$this->setCategorie($categorieProduit);
		$this->setQteStock($qteEnStock);
		$this->setNbVente($nbVente);
	}
	
	public function afficher()
	{
		// Permet d'obtenir le nom de la catégorie du produit
		$co = DataBaseManager::getInstance();
		$req = $co->execRequete("SELECT * FROM tcategorie WHERE ID_CATEGORIE = ".$this->_categorieProduit."");
		$catgorie = NULL;
		if($req != null)
		{
			$donne = mysqli_fetch_assoc($req);
			//print_r($donne);
			$catgorie = Categorie::fillCategorie($err, 
													$donne["ID_CATEGORIE"],
													$donne["LIBELLE_CATEGORIE"]);
			echo $err;		
		}
		$co->libereResultatRequete($req);
		// Fin obtention nom catégorie du produit
		
		echo '<div>
				<strong>Nom Produit : </strong>'.$this->_libelleProduit.'</br>
				<strong>Prix Produit : </strong>'.$this->_prixProduit.'€</br>
				<strong>Catégorie : </strong>'.$catgorie->getNom().'</br>
				<strong>Qte : </strong>'.$this->_qteEnStock.'</br>
				<img src="'.$this->_pathImageProduit.'"></div>';
				
		echo "<br/>";
	}
	
	public static function fillProduit(&$messagesExceptions, $idProduit = NULL, $libelleProduit = NULL, $categorieProduit = NULL,  $prix = NULL, $idCommercant = NULL, $pathImage = NULL, $qteStock = NULL, $nbVente=NULL)
	{
		$produit = new Produit();
		
		if(empty($messagesExceptions)) $messagesExceptions = "";
		try{ $produit->setId($idProduit);} catch(Exception $e){ $messagesExceptions .= $e->getMessage().'<br/>';}
		try{ $produit->setNom($libelleProduit);} catch(Exception $e){ $messagesExceptions .= $e->getMessage().'<br/>';}
		try{ $produit->setPrix($prix);} catch(Exception $e){ $messagesExceptions .= $e->getMessage().'<br/>';}
		try{ $produit->setIdCommercant($idCommercant);} catch(Exception $e){ $messagesExceptions .= $e->getMessage().'<br/>';}
		try{ $produit->setPathImage($pathImage);} catch(Exception $e){ $messagesExceptions .= $e->getMessage().'<br/>';}
		try{ $produit->setCategorie($categorieProduit);} catch(Exception $e){ $messagesExceptions .= $e->getMessage().'<br/>';}
		try{ $produit->setQteStock($qteStock);} catch(Exception $e){ $messagesExceptions .= $e->getMessage().'<br/>';}
		try{ $produit->setNbVente($nbVente);} catch(Exception $e){ $messagesExceptions .= $e->getMessage().'<br/>';}
		
		return $produit;
	}
	
	/*--------------------------------------------------------------------------*/
	/*----------------------------- GETTER -------------------------------------*/
	/*--------------------------------------------------------------------------*/
	
	public function getId(){ return $this->_idProduit;}
	public function getNom(){return $this->_libelleProduit;}
	public function getPrix(){return $this->_prixProduit;}
	public function getIdCommercant(){return $this->_idCommercant;}
	public function getPathImage(){return $this->_pathImageProduit;}
	public function getCategorieProduit(){return $this->_categorieProduit;}
	public function getQteStock(){ return $this->_qteEnStock; }
	public function getNbVente(){ return $this->_nbVente; }
	
	/*--------------------------------------------------------------------------*/
	/*----------------------------- SETTER -------------------------------------*/
	/*--------------------------------------------------------------------------*/
	
	public function setId($id)
	{
		if($id == null || strlen($id) < 1 || strlen($id) > 10)
			throw new Exception('Erreur : ID du produit est obligatoire (TAILLE COMPRISE ENTRE 1 et 10 MAXIMUM)');
		else
			$this->_idProduit = $id;
	} 
	
	public function setNom($nom)
	{
		if($nom == null || strlen($nom) > 50)
			throw new Exception('Erreur : Le libelle est obligatoire et la taille du libelle doit être comprise entre 1 et 50 maximum');
		else
			$this->_libelleProduit = $nom;
	}
	
	public function setCategorie($categorie)
	{
		if($categorie == null)
			throw new Exception('Erreur : La catégorie du produit est obligatoire');
		else
			$this->_categorieProduit = $categorie;
	}
	
	public function setPrix($prix)
	{		
		if($prix == null || !is_float ($prix) > 50)
			throw new Exception('Erreur : Le prix ne peut être null et doit être un nombre décimal');
		else
			$this->_prixProduit = $prix;
	}
	
	public function setIdCommercant($idCom)
	{		
		if($idCom == null)
			throw new Exception('Erreur : L\'ID du commercant ne peut être null');
		else
			$this->_idCommercant = $idCom;
	}
	
	public function setPathImage($pathImg)
	{
		if(strlen($pathImg) > 500)
			throw new Exception('Erreur : La taille du chemin doit être compris entre 1 et 500 maximum');
		else
			$this->_pathImageProduit = $pathImg;
	}
	
	public function setQteStock($qte)
	{
		$this->_qteEnStock = $qte;
	}
	
	public function setNbVente($nbVente)
	{
		$this->_nbVente = $nbVente;
	}

}
?>